﻿Partial Public Class App
    Inherits Application

    Public Sub New()
        InitializeComponent()
    End Sub

    Private Sub Application_Startup(ByVal o As Object, ByVal e As StartupEventArgs) Handles Me.Startup
        Me.RootVisual = New Template1()
    End Sub

    Private Sub Application_Exit(ByVal o As Object, ByVal e As EventArgs) Handles Me.Exit

    End Sub

    Private Sub Application_UnhandledException(ByVal sender As Object, ByVal e As ApplicationUnhandledExceptionEventArgs) Handles Me.UnhandledException

        ' Si l'application s'exécute en dehors du débogueur, signalez l'exception à l'aide de
        ' mécanisme d'exception du navigateur. Sur IE une icône verte s'affichera 
        ' dans la barre d'état et dans Firefox un script d'erreur s'affichera.
        If Not System.Diagnostics.Debugger.IsAttached Then

            ' REMARQUE : cela permet à l'application de continuer à s'exécuter après qu'une exception a été levée
            ' mais pas gérée. 
            ' Pour des applications de production, cette gestion des erreurs doit être remplacée par un système qui 
            ' signale l'erreur au site Web et arrête l'application.
            e.Handled = True
            Deployment.Current.Dispatcher.BeginInvoke(New Action(Of ApplicationUnhandledExceptionEventArgs)(AddressOf ReportErrorToDOM), e)
        End If
    End Sub

    Private Sub ReportErrorToDOM(ByVal e As ApplicationUnhandledExceptionEventArgs)

        Try
            Dim errorMsg As String = e.ExceptionObject.Message + e.ExceptionObject.StackTrace
            errorMsg = errorMsg.Replace(""""c, "'"c).Replace(ChrW(13) & ChrW(10), "\n")

            System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(""Unhandled Error in Silverlight 2 Application " + errorMsg + """);")
        Catch

        End Try
    End Sub

End Class
